/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package BUS;

import DAO.TinhDAO;
import DTO.DefaultValue;
import DTO.TinhDTO;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableModel;

/**
 *
 * @author HuuTri
 */
public class TinhBUS {
    public static DefaultTableModel getTableModel() {
        return TinhDAO.getTableModel();
    }
    
    public static boolean checkMaTinh(String id, String matinh) {
        boolean res = true;
        TinhDTO tinh = new TinhDTO();
        tinh.setMaTinh(matinh);
        tinh.setId(Integer.parseInt(id));
        return TinhDAO.checkMaTinh(tinh);
    }
    
    /**
     * Trả về giá trị của ô tại bảng thuộc GUI
     * @param tableModel
     * @param row
     * @param columnName
     * @return 
     */
    public static Object getValue(TableModel tableModel, int row, String columnName) {
        int index = 1;
        Object value = "";
        switch (columnName) {
            case TinhDTO.ID: 
                value = tableModel.getValueAt(row, index - 1);
                break;
            case TinhDTO.MA_TINH: 
                value = tableModel.getValueAt(row, index); 
                break;
            case TinhDTO.TEN_TINH: 
                value = tableModel.getValueAt(row, index + 1);
                break;
            case TinhDTO.MO_TA: 
                value = tableModel.getValueAt(row, index + 2);
                break;
        }
        if (value != null) 
            return value;
        else 
            return " ";
    }
    
    /**
     * Gán giá trị của ô tại bảng thuộc GUI
     * @param tableModel
     * @param row
     * @param columnName
     * @param value 
     */
    public static void setValue(TableModel tableModel, int row, String columnName, Object value) {
        int index = 1;
        switch (columnName) {
            case TinhDTO.ID: tableModel.setValueAt(value, row, index - 1);
                break;
            case TinhDTO.MA_TINH: tableModel.setValueAt(value, row, index); 
                break;
            case TinhDTO.TEN_TINH: tableModel.setValueAt(value, row, index + 1); 
                break;
            case TinhDTO.MO_TA: tableModel.setValueAt(value, row, index + 2); 
                break;
            default: break;
        }
    }

    /**
     * Thêm một tỉnh mới
     * @param id
     * @param matinh Xác định mã tỉnh khác nhau trong các lần thêm mới
     * @param tentinh
     * @param mota 
     */
    public static boolean insertRecord(String id, String matinh, String tentinh, String mota) {
        TinhDTO tinh = new TinhDTO(
                DefaultValue.INT,
                matinh,
                tentinh,
                mota);
        
        return TinhDAO.insert(tinh);
    }

    /**
     * Xóa thông tin tỉnh
     * @param id Số định danh để xác định đối tượng
     * @param matinh
     * @param tentinh
     * @param mota 
     */
    public static boolean deleteRecord(String id, String matinh, String tentinh, String mota) {
        TinhDTO tinh = new TinhDTO(
                Integer.parseInt(id),
                matinh,
                tentinh,
                mota);
        
        return TinhDAO.delete(tinh);
    }

    /**
     * Cập nhật thông tin 
     * @param id số định danh để xác định đối tượng
     * @param matinh
     * @param tentinh
     * @param mota 
     */
    public static boolean updateRecord(String id, String matinh, String tentinh, String mota) {
        TinhDTO tinh = new TinhDTO(
                Integer.parseInt(id),
                matinh,
                tentinh,
                mota);
        return TinhDAO.update(tinh);
    }
    
    /**
     * Lấy thông tin số định danh mới
     * @return 
     */
    public static int getNewId() {
        return TinhDAO.getNewId();
    }
    
     /*Lấy Mã Quận từ tên quận*/
    public static String getMaTinhFromTenTinh(String tentinh) {
        String res = "";
        String[] temp = tentinh.split(" ");
        if (tentinh.isEmpty()) return "";
        for(String tmp: temp) {
            tmp = tmp.trim();
            if (!tmp.isEmpty())
            {
                res += tmp.toUpperCase().charAt(0);
            }
        }
        
        return res;
    }
}
